home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / dkms / common.postinst
Text File  |  2009-08-21  |  4KB  |  119 lines

  1. #!/bin/sh
  2. # Copyright (C) 2002-2005 Flavio Stanchina
  3. # Copyright (C) 2005-2006 Aric Cyr
  4. # Copyright (C) 2007 Mario Limonciello
  5. # Copyright (C) 2009 Alberto Milone
  6.  
  7. set -e
  8.  
  9. NAME=$1
  10. VERSION=$2
  11. TARBALL_ROOT=$3
  12. ARCH=$4
  13. UPGRADE=$5
  14.  
  15. if [ -z "$NAME" ] || [ -z "$VERSION" ]; then
  16.     echo "Need NAME, and VERSION defined"
  17.     echo "ARCH is optional"
  18.     exit 1
  19. fi
  20.  
  21. KERNELS=$(ls /lib/modules/)
  22. CURRENT_KERNEL=$(uname -r)
  23.  
  24. #We never want to keep an older version side by side to prevent conflicts
  25. if [ -e "/var/lib/dkms/$NAME/$VERSION" ]; then
  26.     echo "Removing old $NAME-$VERSION DKMS files..."
  27.     dkms remove -m $NAME -v $VERSION --all
  28. fi
  29.  
  30. #Load new files, by source package and by tarball
  31. echo "Loading new $NAME-$VERSION DKMS files..."
  32. if [ -d "/usr/src/$NAME-$VERSION" ]; then
  33.     dkms add -m $NAME -v $VERSION > /dev/null
  34. fi
  35.  
  36. if [ -f "$TARBALL_ROOT/$NAME-$VERSION.dkms.tar.gz" ]; then
  37.     if ! dkms ldtarball --archive "$TARBALL_ROOT/$NAME-$VERSION.dkms.tar.gz"; then
  38.         echo ""
  39.         echo ""
  40.         echo "Unable to load DKMS tarball $TARBALL_ROOT/$NAME-$VERSION.dkms.tar.gz."
  41.         echo "Common causes include: "
  42.         echo " - You must be using DKMS 2.1.0.0 or later to support binaries only"
  43.         echo "   distribution specific archives."
  44.         echo " - Corrupt distribution specific archive"
  45.         echo ""
  46.         echo ""
  47.         exit 2 
  48.     fi
  49. fi
  50.  
  51. # On 1st installation, let us look for a directory
  52. # in /lib/modules which matches `uname -r`. If none
  53. # is found it is possible that buildd is being used
  54. # and that uname -r is giving us the name of the
  55. # kernel used by the buildd machine.
  56. # If this is the case we try to build the kernel
  57. # module for each kernel which has a directory in 
  58. # /lib/modules. Furthermore we will have to tell 
  59. # DKMS which architecture it should build the module
  60. # for (e.g. if the buildd machine is using a
  61. # 2.6.24-23-xen 64bit kernel).
  62. #
  63. # NOTE: if the headers are not installed then the
  64. #       module won't be built, as usual
  65. if [ -z "$UPGRADE" ]; then
  66.     echo "First Installation: checking all kernels..."
  67.     for KERNEL in $KERNELS; do
  68.         if [ ${KERNEL} = ${CURRENT_KERNEL} ]; then
  69.             # Kernel found
  70.             KERNELS=$CURRENT_KERNEL
  71.             break
  72.         fi
  73.     done
  74. else
  75.     KERNELS=$CURRENT_KERNEL
  76. fi
  77.  
  78. if [ ! -z "$ARCH" ]; then
  79.     echo "Building for architecture $ARCH"
  80.     ARCH="-a $ARCH"
  81. fi
  82.  
  83. for KERNEL in $KERNELS; do
  84.     dkms_status=`dkms status -m $NAME -v $VERSION -k $KERNEL $ARCH`
  85.     if [ `echo $KERNEL | grep -c "BOOT"` -gt 0 ]; then
  86.         echo ""
  87.         echo "Module build and install for $KERNEL was skipped as "
  88.         echo "it is a BOOT variant"
  89.         continue
  90.     fi
  91.  
  92.  
  93.     #if the module isn't yet built, try to build it
  94.     if [ `echo $dkms_status | grep -c ": built"` -eq 0 ]; then
  95.         if [ ! -L /var/lib/dkms/$NAME/$VERSION/source ]; then
  96.             echo "This package appears to be a binaries-only package"
  97.             echo " you will not be able to build against kernel $KERNEL"
  98.             echo " since the package source was not provided"
  99.             continue
  100.         fi
  101.         if [ -e /lib/modules/$KERNEL/build/include ]; then
  102.             echo "Building initial module for $KERNEL"
  103.             dkms build -m $NAME -v $VERSION -k $KERNEL $ARCH > /dev/null
  104.             echo "Done."
  105.             dkms_status=`dkms status -m $NAME -v $VERSION -k $KERNEL $ARCH`
  106.         else
  107.             echo "Module build for the currently running kernel was skipped since the"
  108.             echo "kernel source for this kernel does not seem to be installed."
  109.         fi
  110.     fi
  111.  
  112.     #if the module is built (either pre-built or just now), install it
  113.     if [ `echo $dkms_status | grep -c ": built"` -eq 1 ] && 
  114.        [ `echo $dkms_status | grep -c ": installed"` -eq 0 ]; then
  115.         dkms install -m $NAME -v $VERSION -k $KERNEL $ARCH
  116.     fi
  117. done
  118.